//
// Created by qzj on 2021/4/25.
//

#ifndef SRC_CONFIG_H
#define SRC_CONFIG_H

#include <yaml-cpp/yaml.h>
#include "global_defination/global_defination.h"
#include <Eigen/Core>
#include <vector>
#include <Eigen/Geometry>
#include <iostream>
#include <fstream>      // std::ifstream
#include <stdio.h>
#include <unistd.h>

class Config {

public:

    Config() {}

    static void readConfig();

public:

    static std::string lidar_topic;
    static std::string imuTopic;
    static std::string gnss_topic;
    static std::string vel_topic;

    static std::string map_dir_;
    static std::string global_map_;
    static std::string gnss_map_;
    static Eigen::Vector3d gnss_origin_;

    static bool use_gnss;
    static bool use_wheel;
    static bool use_ring;
    static bool use_lidar_time;
    static float wheel_scale_;

    static Eigen::Matrix4d car_to_imu_;
    static Eigen::Matrix4d imu_to_camera_;
    static Eigen::Matrix4d camera_to_car_;

    static Eigen::Matrix4d imu_to_car_;
    static Eigen::Matrix4d camera_to_imu_;
    static Eigen::Matrix4d car_to_camera_;

    static Eigen::Matrix4d lego_to_lidar_;

    static std::string init_method_;
    static float prior_ori_;
    static float car_height_;

    static YAML::Node config_node_;
};


#endif //SRC_CONFIG_H
